介紹完了Javascript types,我們知道Javascript的組成大概是這樣,Variable -> Value -> Types,一個變數可以給予一個Value,這個Value同時決定此變數的Type。
更精確的說法我們可以稱為,執行動作的句子是一個Statement,statement裡面又包含了Expression,而Expression正是由variable或者Value,或者是一段由Variable和Value透過Operators結合起來的一段式子。
聽起來有點抽象,我們直接舉出例子來看。
那前面我們知道了 value、variable、types,今天就來看看Operators吧 !
一般來說,Operator是一個特殊的函式,與一般函式的寫法不同,通常,operators讀取兩個參數後回傳一個新的結果。
Operator的存在其實式挺直覺,例如常見的 = * + - 諸如此類,所以他實際上的用途就是在variable 與 value上面做一些行為,好比 * 就是將value做一個乘法的動作, = 就是負責assign這個動作。
特別注意到Assignment Operators的執行是從右到左稱為 Right-associativeity 以下見範例。
這段結果 a & b 的 value都會是5,那實際上的動作是這樣的
所以是從右邊先開始的,這就是Right-associative。
有了上面的觀念,你會觀察到,那不一樣的Operator從哪邊開始先處理呢,實際上是這樣的,就像梁山108條好漢長幼有序,如此多的Operator也是要照輩分來的。以下就是常見到的Operator順序。
更多的Operator參見參考來源。
來源
常見的operators們多半是符號,可能會造成大家的誤會,但實際上有些Operators是被寫成拼字的,而我們前面的篇章就有用到這樣的Operator,例如 - typeof 、 in 、delete 等等
由上面的例子我們看到 typeof operator只針對一個value做動作,而 +-*/ 則對兩個values是則對兩個values做動作。
再來根據運算子的功能分成下面幾大類
更多細節就麻煩大家有興趣自己看看囉
Operators 大全
想當初,在學習的途中遇到一題問題是這樣,a++、++a的差別在哪裡,那時候我認為反正就是 +1 沒什麼差別的,但後來發現其實是挺需要在意的小細節,在這邊稍微分享給大家。
這兩個運算子都有Postfix與Prefix的差別
operator在後面的狀況,也就是 a++,還沒執行 + 的動作 就先把原本的值丟過去。
operator在前面的狀況,也就是++a,是先執行 + 的動作再把值丟過去。
到這邊,就是Operator的基本認知,那基本上一些運算子也會有像後面介紹的 postfix 與 prefix 諸如此類的,比較tricky的部分,大家無聊可以多玩玩operator測試,一起分享這些tricky part吧 !
BTW,小小愧疚的是Operator有一些細節如強制轉型的觀念需要理解,礙於今天時間不多,之後再回頭來新增此部分的內容吧 !